package com.swanclouds.model.systems;

import com.swanclouds.model.DeviceEntity;
import com.swanclouds.redfish.common.redfish.Boot;
import com.swanclouds.redfish.common.redfish.MemorySummary;
import com.swanclouds.redfish.common.redfish.ProcessorSummary;
import com.swanclouds.redfish.common.redfish.Status;

import java.util.List;
import java.util.Map;

/**
 * 系统资源信息
 *
 * @author 张立强
 *  
 */
public interface Systems extends DeviceEntity {
    /**
     * 系统资源的制造商
     * @return getManufacturer
     */
    String getManufacturer();

    /**
     * 系统资源型号
     * @return getModel
     */
    String getModel();

    /**
     * 系统资源的序列号
     * @return getSerialNumber
     */
    String getSerialNumber();

    /**
     * Redfish 允许的系统资源可执行的操作
     * @return getAction
     */
    Map<String,Object> getAction();

    /**
     * 系统资源的资产编码
     * @return getAssetTag
     */
    String getAssetTag();

    /**
     * 系统资源的全球唯一标识
     * @return getUUID
     */
    String getUUID();

    /**
     * 系统资源的主机角色
     * @return getHostingRole
     */
    List<String> getHostingRole();

    /**
     * 系统资源的主机名
     * @return getHostName
     */
    String getHostName();

    /**
     * 系统资源的上电状态
     * @return getPowerState
     */
    String getPowerState();

    String getTrustedModules();

    String getPartNumber();

    String getSystemType();

    Status getStatus();

    String getPowerRestorePolicyType();

    String getIndicatorLED();

    Boot getBoot();

    ProcessorSummary getProcessorSummary();

    MemorySummary getMemorySummary();

    Map<String, Object> getOem();

    /**
     *
     * @return getBiosVersion
     */
    String getBiosVersion();

    /**
     * PCIe 功能资源节点的访问路径
     * @return getPCIeFunctions
     */
    List<String> getPCIeFunctions();

    /**
     * PCIe 设备资源节点的访问路径
     * @return getPCIeDevices
     */
    List<String> getPCIeDevices();

    Boolean supportProcessorService();
    Boolean supportMemoryService();
    Boolean supportStorageService();
    Boolean supportBiosService();
    Boolean supportEthernetInterfaceService();
    Boolean supportNetworkInterfaceService();
    Boolean supportLogServices();

}
